package edu.qichen.onlineBlog.framework;

import edu.qichen.onlineBlog.log.pojo.Syslog;
import org.springframework.stereotype.Component;

import java.util.Queue;
import java.util.concurrent.LinkedBlockingQueue;

/**
 * 功能:定时任务，定时任务插入数据，队列存储每次需要插入的数据，每次插入后就清空队列。
 * 作者:程序员欧阳子韩
 * 日期:2024/5/1 14:13
 */
@Component
public class LogQueue {
    // LinkedList实现Queue接口，可以用LinkedList做一个队列，这里使用阻塞队列LinkedBlockingQueue
    private volatile Queue<Syslog> dataQueue = new LinkedBlockingQueue<>();

    /**
     * 添加日志信息到队列，如果队列满，则阻塞等待。throws InterruptedException
     * @param syslog 日志对象
     */
    public void add(Syslog syslog)  {
        dataQueue.add(syslog);
    }


    // 获取日志信息，用于插入数据库
    public Syslog poll() {
        return dataQueue.poll();
    }
}
